home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacWorld 1999 January - Disc 2
/
Macworld (1999-01) (Disk 2).dmg
/
Serious Demos
/
Symbolic Composer 4.2
/
Environment
/
System
/
MRAC
/
Lengths
/
Modify
/
l-complement2
< prev
next >
Wrap
Lisp/Scheme
|
1998-08-11
|
2KB
|
46 lines
l-complement2 type length pattern
This function is used to complement existing values in a note-length list with further values to enable the whole list to 'add-up' to a user-defined zone-length.
type :note :rest seed
(setq len1 (qlength '((8-11) (20-11111) (8-11) (12-111))))
(setq pat (l-tie len1))
=> ((1/8) (7/40) (1/20 1/20 1/20) (7/40) (5/24) (1/12 1/12))
(l-complement2 :note '1/4 pat)
=> ((1/8 1/8) (1/8 7/40 1/5) (1/20 1/20 1/20 1/20 1/20)
(1/5 7/40 1/8) (1/8 5/24 1/6) (1/12 1/12 1/12))
(l-complement2 :rest '1/4 pat)
=> ((1/8 -1/8) (-1/8 7/40 -1/5) (-1/20 1/20 1/20 1/20 -1/20)
(-1/5 7/40 -1/8) (-1/8 5/24 -1/6) (-1/12 1/12 1/12))
(l-complement2 nil '1/4 pat)
=> ((1/8 -1/8) (-1/8 7/40 1/5) (-1/20 1/20 1/20 1/20 1/20)
(1/5 7/40 -1/8) (1/8 5/24 1/6) (1/12 1/12 1/12))
or...
(l-complement2 .23 '1/4 pat)
=> ((1/8 1/8) (1/8 7/40 1/5) (-1/20 1/20 1/20 1/20 1/20)
(1/5 7/40 -1/8) (1/8 5/24 -1/6) (-1/12 1/12 1/12))
(setq len2 (permute-unique (qlength '(20-10100))))
(setq prime (vector-to-list (gen-primes 18)))
(l-complement2 :note '1/4
(l-modify .45 nil :note :times
(symbol-shuffle prime .32) len2))
=> ((13/20 11/20 -1/20 -1/20 -1/20 3/20)
(1/10 1/10 -1/20 17/20 -1/20 -1/20 1/20)
(1/5 1/20 -1/20 -1/20 7/20 -1/20)
(1/4 1/4 -1/20 -1/20 -1/20 3/20 1/5)
(1/20 -1/20 13/20 11/20 -1/20 -1/20 1/10)
(3/20 -1/20 1/10 -1/20 17/20 -1/20)
(1/4 -1/20 1/20 -1/20 -1/20 7/20 1/5)
(1/20 -1/20 -1/20 -1/20 1/4 3/20 3/20)
(1/10 -1/20 -1/20 13/20 11/20 -1/20 1/20)
(1/5 -1/20 -1/20 1/10 -1/20 17/20 1/5))